// HSS.Forms.Docking.NestedDockingStatus.cs
// ----------------------------------------------------------------------------
// Licensed under the MIT license
// http://www.opensource.org/licenses/mit-license.html
// ----------------------------------------------------------------------------
// HighSpeed-Solutions, LLC
// Copyright (c) 2001-2010
// ----------------------------------------------------------------------------
// File:       NestedDockingStatus.cs
// Author:     HSS\gbanta
// Created:    08/12/2010
// Modified:   12/04/2010
// ----------------------------------------------------------------------------
using System.Drawing;

namespace HSS.Forms.Docking
{
	#region NestedDockingStatus
	/// <summary>
	/// NestedDockingStatus
	/// </summary>
	public sealed class NestedDockingStatus
	{
		#region Properties

		/// <summary>
		/// DockPane
		/// </summary>
		public DockPane DockPane
		{
			get	{	return _dockPane;	}
		} DockPane _dockPane = null;
		
		/// <summary>
		/// NestedPanes
		/// </summary>
		public NestedPaneCollection NestedPanes
		{
			get	{	return _nestedPanes;	}
		} NestedPaneCollection _nestedPanes = null;
		
		/// <summary>
		/// PreviousPane
		/// </summary>
		public DockPane PreviousPane
		{
			get	{	return _previousPane;	}
		} DockPane _previousPane = null;

		/// <summary>
		/// Alignment
		/// </summary>
		public DockAlignment Alignment
		{
			get	{	return _alignment;	}
		} DockAlignment _alignment = DockAlignment.Left;

		/// <summary>
		/// Proportion
		/// </summary>
		public double Proportion
		{
			get	{	return _proportion;	}
		} double _proportion = 0.5;

		/// <summary>
		/// IsDisplaying
		/// </summary>
		public bool IsDisplaying
		{
			get	{	return _isDisplaying;	}
		} bool _isDisplaying = false;
 
		/// <summary>
		/// DisplayingPreviousPane
		/// </summary>
		public DockPane DisplayingPreviousPane
		{
			get	{	return _displayingPreviousPane;	}
		} DockPane _displayingPreviousPane = null;

		/// <summary>
		/// DisplayingAlignment
		/// </summary>
		public DockAlignment DisplayingAlignment
		{
			get	{	return _displayingAlignment;	}
		} DockAlignment _displayingAlignment = DockAlignment.Left;
 
		/// <summary>
		/// DisplayingProportion
		/// </summary>
		public double DisplayingProportion
		{
			get	{	return _displayingProportion;	}
		} double _displayingProportion = 0.5;

		/// <summary>
		/// LogicalBounds
		/// </summary>
		public Rectangle LogicalBounds
		{
			get	{	return _logicalBounds;	}
		} Rectangle _logicalBounds = Rectangle.Empty;

		/// <summary>
		/// PaneBounds
		/// </summary>
		public Rectangle PaneBounds
		{
			get	{	return _paneBounds;	}
		} Rectangle _paneBounds = Rectangle.Empty;

		/// <summary>
		/// SplitterBounds
		/// </summary>
		public Rectangle SplitterBounds
		{
			get	{	return _splitterBounds;	}
		} Rectangle _splitterBounds = Rectangle.Empty;

		#endregion

		#region Methods

		internal NestedDockingStatus(DockPane pane)
		{
			_dockPane = pane;
		}

		internal void SetStatus(NestedPaneCollection nestedPanes, DockPane previousPane, DockAlignment alignment, double proportion)
		{
			_nestedPanes = nestedPanes;
			_previousPane = previousPane;
			_alignment = alignment;
			_proportion = proportion;
		}

		internal void SetDisplayingStatus(bool isDisplaying, DockPane displayingPreviousPane, DockAlignment displayingAlignment, double displayingProportion)
		{
			_isDisplaying = isDisplaying;
			_displayingPreviousPane = displayingPreviousPane;
			_displayingAlignment = displayingAlignment;
			_displayingProportion = displayingProportion;
		}

		internal void SetDisplayingBounds(Rectangle logicalBounds, Rectangle paneBounds, Rectangle splitterBounds)
		{
			_logicalBounds = logicalBounds;
			_paneBounds = paneBounds;
			_splitterBounds = splitterBounds;
		}

		#endregion
	}
	#endregion
}